אלגוריתמים סמסטר א' תשע"ב מרצים: פרופ' עמוס פיאט ופרופ' מיכה שריר. מתרגלים: שי ורדי ואדם שפר.

Σχετικά έγγραφα
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

%Initialization: Layer(0):={s}; i:=0; %Iterations: While there is an edge (u,v) s.t. u Layer( i)& v. i:=i+1;

Αλγόριθμοι Γραφημάτων

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Αλγόριθμοι Γραφημάτων

Δομές Δεδομένων Ενότητα 6

Fractional Colorings and Zykov Products of graphs

Layer(0) := {s}; i := 0; While there is an edge (u,v) s.t. u Layer( i)& v Layer( k) i := i+1; R := {s}; while there is an edge (u,v) s.t.

Αλγόριθμοι Γραφημάτων

Network Algorithms and Complexity Παραλληλοποίηση του αλγορίθμου του Prim. Αικατερίνη Κούκιου

Σχεδίαση & Ανάλυση Αλγορίθμων

Επίλυση Προβληµάτων µε Greedy Αλγόριθµους

Αλγόριθµοι και Πολυπλοκότητα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθμοι και πολυπλοκότητα Minimum Spanning Trees

Σχεδιαση Αλγοριθμων -Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο

Minimum Spanning Tree: Prim's Algorithm

Αλγόριθμοι Γραφημάτων

Αλγόριθµοι και Πολυπλοκότητα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Αλγόριθµοι και Πολυπλοκότητα

Γράφοι: κατευθυνόμενοι και μη

Αλγόριθμοι και πολυπλοκότητα Τα συντομότερα μονοπάτια(shortest Paths)

Ενότητα 5: Αλγόριθμοι γράφων και δικτύων

ΠΛΗ111. Ανοιξη Μάθηµα 10 ο. Γράφοι. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

O(n logba ) (p q)(x) p(x) q(x) O(n 2 ) 2n + 1. (p q)(x) O(n n)

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 10η: Γράφοι Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

Τ.Ε.Ι. Πελοπόννησου. Σχολή Τεχνολογικών Εφαρμογών Τμήμα Μηχανικών Πληροφορικής Τ.Ε. ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Δίκτυα και Δρομολόγηση Πακέτων

Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και πολυπλοκότητα Depth-First Search

Ενότητα 10 Γράφοι (ή Γραφήµατα)

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 9: Άπληστοι Αλγόριθμοι. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

Αλγόριθμοι Επανάληψη για πρόοδο

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 10

Nowhere-zero flows Let be a digraph, Abelian group. A Γ-circulation in is a mapping : such that, where, and : tail in X, head in

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

מבחן מועד ב' בהצלחה! אנא קיראו היטב את ההוראות שלהלן: ודאו כי כל עמודי הבחינה נמצאים בידכם.

Εισαγωγή στην Επιστήμη των Υπολογιστών

Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθµοι και Πολυπλοκότητα

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

מבני נתונים ואלגוריתמים תרגול #8-9

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

Εισαγωγή στην Επιστήμη των Υπολογιστών

ΕΠΛ 231 Δοµές Δεδοµένων και Αλγόριθµοι 11-1

Θεωρία και Αλγόριθμοι Γράφων

Αλγόριθμοι και πολυπλοκότητα NP-Completeness (2)

Κατ οίκον Εργασία 5 Σκελετοί Λύσεων

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Διακριτά Μαθηματικά. Ενότητα 3: Δένδρα

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 7

Lecture 2. Soundness and completeness of propositional logic

Distances in Sierpiński Triangle Graphs

Θεωρία και Αλγόριθμοι Γράφων

כלליים זמן: S מחסנית, top(s) ראש המחסנית. (Depth First Search) For each unmarked DFS(v) / BFS(v) רקורסיבי. אלגוריתם :BFS

Αλγόριθμοι και πολυπλοκότητα Directed Graphs

The Simply Typed Lambda Calculus

Δένδρα επικάλυψης ελάχιστου κόστους και το πρόβλημα του πλανόδιου πωλητή (Traveling Salesman Problem: TSP)

Αλγόριθμοι και πολυπλοκότητα Περιήγηση Πανεπιστημίων

Θεωρία Γράφων Αλγόριθμοι BFS, Prim, Dijkstra, Bellman-Ford

Αλγόριθµοι και Πολυπλοκότητα

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Τεχνητή Νοημοσύνη. Ενότητα 2: Αναζήτηση (Search)

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Γραφήματα. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

4. GREEDY ALGORITHMS II

Graph Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι Αλγόριθμοι» Καούρη Γεωργία Μήτσου Βασιλική

Every set of first-order formulas is equivalent to an independent set

Μάθημα 21: Ουρές (Queues)

Αλγόριθμοι Ταξινόμησης Μέρος 3

Copy of dessin. print 'Genus',1+2^(n-k-1)*(n/4-1) print ''

ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ

ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΑΛΓΟΡΙΘΜΟΙ ΓΙΑ ΕΥΡΕΣΗ ΤΗΣ ΜΕΓΙΣΤΗΣ ΡΟΗΣ ΣΕ ΕΝΑ ΔΙΚΤΥΟ ΡΟΗΣ

Neural'Networks' Robot Image Credit: Viktoriya Sukhanova 123RF.com

Αλγόριθμοι Δρομολόγησης. Γ. Κορμέντζας

Διάλεξη 18: Γράφοι I Εισαγωγή

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Δρομολόγηση στο Internet (II) Αλγόριθμοι Distance Vector (Bellman) Αλγόριθμοι Link State (Dijkstra)

HOMEWORK 4 = G. In order to plot the stress versus the stretch we define a normalized stretch:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ342: Βάσεις Δεδομένων. Χειμερινό Εξάμηνο Φροντιστήριο 10 ΛΥΣΕΙΣ. Επερωτήσεις SQL

Διάλεξη 29: Γράφοι. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 20: Γράφοι I - Εισαγωγή

Γράφηµα (Graph) Εργαστήριο 10. Εισαγωγή

Αλγόριθμοι Δικτύων και Πολυπλοκότητα

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

3 Degree Centrality. 4 Closeness Centrality. Degree: (out-degree). In-Degree: Out-Degree: c D (v) = deg(v) c Din (v) = deg (v) c Dout (v) = deg + (v)

SCHOOL OF MATHEMATICAL SCIENCES G11LMA Linear Mathematics Examination Solutions

Αλγόριθµοι Ροής σε Γράφους (CLR, κεφάλαιο 27)

Διάλεξη 18: Γράφοι I - Εισαγωγή

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

ΑΙΚΑΤΕΡΙΝΗ-ΠΑΝΑΓΙΩΤΑ ΣΤΟΥΚΑ ΝΙΚΟΛΑΟΣ ΛΑΜΠΡΟΥ. μπλ 2014

Άσκηση 1. Ψευδοκώδικας Kruskal. Παρακάτω βλέπουμε την εφαρμογή του στο παρακάτω συνδεδεμένο γράφημα.

Overview. Transition Semantics. Configurations and the transition relation. Executions and computation

Σχέσεις, Ιδιότητες, Κλειστότητες

Advanced Subsidiary Unit 1: Understanding and Written Response

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Section 8.3 Trigonometric Equations

Transcript:

אלגוריתמים סמסטר א' תשע"ב מרצים: פרופ' עמוס פיאט ופרופ' מיכה שריר. מתרגלים: שי ורדי ואדם שפר. תוכן הקורס מבוא: גרפים: הגדרות וייצוג גרפים במחשב. שימושים לגרפים. עצים, יערות ותכונותיהם הבסיסיות חזרה. גרפי אוילר: מעגל אוילר ומסלול אוילר. )מעגל המילטון ומסלול המילטון.( סריקת גרפים: חיפוש לרוחב (BFS) ושימושיו: מציאת מסלולים קצרים ביותר בקשתות. חיפוש לעומק,(DFS) עץ DFS ותכונותיו, שימושים ל- :DFS בגרף לא מכוון: מציאת רכיבי דו-קשירות ומציאת גשרים. בגרף מכוון: מציאת רכיבי קשירות חזקה ומיון טופולוגי של גרף אציקלי. עץ פורש מינימלי: מציאת עץ פורש מינימלי: האלגוריתמים של Kruskal ו-.Prim מסלולים קצרים ביותר בגרפים עם משקלים: מציאת מסלולים קצרים ביותר מקודקוד נתון: האלגוריתמים של Dijkstra ו-.Bellman-Ford מציאת מסלולים קצרים ביותר מכל קודקוד לכל קודקוד: כפל מטריצות,.Johnson,Floyd-Warshall תכנות דינאמי. זרימה ברשתות: רשתות זרימה, האלגוריתם של,Ford-Fulkerson משפט,Max Flow Min Cut האלגוריתם של Edmonds-Karp והאלגוריתם של.Dinic רשתות 0-1, מספר מקסימלי של מסלולים זרים בקשתות ובקודקודים, קשירות קשתות וקודקודים, זיווג מקסימלי בגרף דו-צדדי ומשפט.Hall תכנות לינארי. התאמת מחרוזות: בעיית התאמת מחרוזות, האלגוריתם הנאיבי ו-.KMP

EULER(graph G=(V,E) ) // Find an Euler circuit. L {v} // vv any vertex,{v} - an empty circuit while there is a vertex on L with unused edges v first such vertex on L L Find-Circuit(v) paste L into L instead of v return L FIND-CIRCUIT(v 0 ) // Find a circuit starting at v 0. Return list of vertices. L {v 0 } v v 0 // initialize list repeat u a neighbour of v via an unused edge mark (v,u) used L Append(L,u) v u until v = v 0 return L total complexity O(E+V)

BFS & DFS BFS(G,s) 1 for each vertex u V {s} 2 do color[u] WHITE 3 d[u] 4 [u] NIL 5 color[s] GRAY 6 d[s] 0 7 [s] NIL 8 Q {s} 9 while Q Ø 10 do u head[q] 11 for each v Adj[u] 12 do if color[v] = WHITE 13 then color[v] GRAY 14 d[v] d[u] + 1 15 [v] u 16 ENQUEUE(Q,v) 17 DEQUEUE(Q) 18 color[u] BLACK DFS(G) 1 for each vertex u V 2 do color[u] WHITE 3 [u] NIL 4 time 0 5 for each vertex u V 6 do if color[u] = WHITE 7 Then DFS-VISIT(u) DFS-VISIT(u) 1 color[u] GRAY 2 d[u] time time + 1 3 for each v Adj[u] 4 do if color[v] = WHITE 5 then [v] u 6 DFS-VISIT(v) 7 color[u] BLACK 8 f[u] time time + 1

Minimum Spanning Trees MST-KRUSKAL(G,w) 1 A Ø 2 for each vertex v V 3 do MAKE-SET(v) 4 sort E by nondecreasing weight w 5 for each edge (u,v) E, by nondecreasing weight order 6 do if FIND-SET(u) FIND-SET(v) 7 then A A {(u,v)} 8 UNION(u,v) 9 return A MST-PRIM(G,w,r) 1 Q V 2 for each u Q 3 do key[u] 4 key[r] 0 5 [r] NIL 6 while Q Ø 7 do u EXTRACT-MIN(Q) 8 for each v Adj[u] 9 do if v Q and w(u,v) < key[v] 10 then [v] u 11 key[v] w(u,v)

UNION-FIND data structure for disjoint sets מבנה נתונים המייצג אוסף של קבוצות זרות. לכל קבוצה יש שם ייחודי )נציג הקבוצה( הנבחר בצורה חפשית על ידי מנגנון מבנה הנתונים. תומך בפעולות הבאות : MakeSet(v) create set {v}. Find(v) return the set-name of v. Union(u,v) unite sets containing u and v. תזכורת: תורי קדימויות בניית תור עם V איברים הוצאת מינימום הקטנת ערך של מפתח Q.DecreaseKey O(log V) Q.DeleteMin() O(log V) Q.Build O(V log V) עץ חפוש מאוזן O(V) O(1) O(V log V) רשימה ממוינת O(1) O(V) O(V) מערך לא ממוין O(log V) O(log V) O(V) ערימה בינארית O(1) O(log V) O(1) ערימת פיבונצ 'י

Single-Source Shortest Paths INITIALIZE-SINGLE-SOURCE(G,s) 1 for each v V 2 do d[v] 3 [v] NIL 4 d[s] 0 RELAX(u,v,w) 1 if d[v] > d[u] + w(u,v) 2 then d[v] d[u] + w(u,v) 3 [v] u DIJKSTRA(G,w,s) 1 INITIALIZE-SINGLE-SOURCE(G,s) 2 S Ø 3 Q V // priority queue 4 while Q Ø 5 do u EXTRACT-MIN(Q) 6 S S {u} 7 for each v Adj[u] 8 do RELAX(u,v,w) BELLMAN-FORD(G,w,s) 1 INITIALIZE-SINGLE-SOURCE(G,s) 2 for i 1 to V - 1 3 do for each edge (u,v) E 4 do RELAX(u,v,w) 5 for each edge (u,v) E 6 do if d[v] > d[u] + w(u,v) 7 then return FALSE 8 return TRUE

All-Pairs Shortest Paths EXTEND-SHORTEST-PATHS(D,W) 1 n rows[d] 2 let D = (d ij ) be an n n matrix 3 for i 1 to n 4 do for j 1 to n 5 do d ij 6 for k 1 to n 7 do d ij min(d ij,d ik + w kj ) 8 return D SLOW-ALL-PAIRS-SHORTEST-PATHS(W) 1 n rows[w] 2 D (1) W 3 for m 2 to n 1 4 do D (m) EXTEND-SHORTEST-PATHS(D (m 1),W) 5 return D (n-1) FASTER-ALL-PAIRS-SHORTEST-PATHS(W) 1 n rows[w] 2 D (1) W 3 m 1 4 while m < n 1 5 do D (2m) EXTEND-SHORTEST-PATHS(D (m),d (m) ) 6 m 2m 7 return D (m) FLOYD-WARSHALL(W) 1 n rows[w] 2 D (0) W 3 for k 1 to n 4 do for i 1 to n 5 do for j 1 to n 6 do d (k) ij min(d (k 1) ij,d (k 1) ik + d (k 1) kj) 7 return D (n)

JOHNSON(G) 1 compute G =(V,E ), where V = V {s}, E = E {(s,v) v V }, and v V w(s,v) = 0 2 if BELLMAN-FORD(G,w,s) = FALSE 3 then print G contains a negative-weight cycle 4 else for each vertex v V 5 do h(v) δ(s,v) computed by BELLMAN-FORD 6 for each edge (u,v) E 7 do w (u,v) w(u,v) + h(u) h(v) 8 for each vertex u V 9 do run DIJKSTRA(G,w,u) to compute δ (u,v) for all v V 10 for each vertex v V 11 do d uv δ (u,v) + h(v) h(u) 12 return D Ford-Fulkerson FORD-FULKERSON-METHOD(G,s,t) 1 Initialize flow f to 0 everywhere 2 while there exists an augmenting path p 3 do augment flow f along p 4 return f FORD-FULKERSON(G,s,t) // Initialize 1 for each edge (u,v) E(G) 2 do f[u,v] 0 3 f[v,u] 0 // Main loop 4 repeat until f does not change // Construct residual network 5 E f 0 6 for each edge (u,v) E[G] 7 do c f [u,v] c[u,v]-f[u,v] 8 if c f [u,v] > 0 9 then add (u,v) to E f // Augment the flow 10 if there exists a path p from s to t in the residual network G f =(V,E f ) 11 do c f (p) min { c f [u,v] (u,v) p } 12 for each edge (u,v) p 13 do f[u,v] f[u,v]+c f (p) 14 f[v,u] -f[u,v] 15 return f

DINIC

KMP KMP-MATCHER(T,P) 1 n length[t] 2 m length[p] 3 COMPUTE-PREFIX-FUNCTION(P) 4 j 0 5 for i 1 to n 6 do while j > 0 and P[j + 1] T[i] 7 do j [j] 8 if P[j + 1] = T[i] 9 then j j + 1 10 if j = m 11 then print pattern occurs with shift i m 12 j [j] COMPUTE-PREFIX-FUNCTION(P) 1 m length[p] 2 [1] 0 3 k 0 4 for j 2 to m 5 do while k > 0 and P[k + 1] P[j] 6 do k [k] 7 if P[k + 1] = P[j] 8 then k k + 1 9 [j] k 10 return